Über Jahrzehnte ermöglichte der technologische Fortschritt bei der Chipfertigung in der Computerindustrie eine immer höhere Integrationsdichte bei Computerprozessoren und immer höhere Taktfrquenzen.
Doch die Physik hat diesem Trend Grenzen gesetzt. Strukturgrößen unter 10nm sind mit der heutigen Technik kaum erreichbar und bei Taktfrequenzen über 4 GHz ist eine aufwändige Kühlung vonnöten.
Eine Erhöhung der Taktraten setzt auch eine Spannungserhöhung voraus. Das führt zu einer höheren Leistungsaufnahme der Chips. Sollen also die Taktfrequenzen steigen, nehmen parallel Hitze und Stromverbrauch zu. Tatsächlich haben beide Faktoren mehr Einfluss als der eigentliche Takt und stellen damit die Hauptgründe für den aktuellen Stillstand dar.
Die Lösung
Eine Möglichkeit der Fortentwicklung in der Leistungsfähigkeit war die Einführung von Mehrkernprozessoren.
Die rein theoretische Leistungssteigerung ist vergleichsweise effizient und beträgt maximal das n-fache pro zusätzlichem Prozessorkern. In der Praxis hängt die Leistungssteigerung aber stark von der Architekur der Multiprozessorsystems ab und dem Parallelisierungsgrad des ausgeführten Programms und des verwendeten Betriebssystems.
Mit diesen 3 einfachen Spielstationen soll ein gewisses Bewusstsein für die Möglichkeiten und Grenzen der Parallelisierung geschaffen werden.
Grob gesprochen lautet die Antwort: Viele Probleme lassen sich in völlig trivialer Weise parallelisieren, andere Probleme lassen sich nur mit einem gewissen Aufwand parallelisieren und schließlich gibt es auch viele Probleme, die sich gar nicht parallelisieren lassen.
Welches Problem in welche Kategorie gehört, ist oft leider nicht offensichtlich.
Reine serielle Verarbeitung
Ein Beispiel, daß mehrere Prozessoren keinen Vorteil bringen ist die Berechnung nacheinander geschalteter logischer Abläufe.
Hier können keine weiteren Prozessoren parallel arbeiten, da sie auf das Ergebnis der Vorberechnungen warten müssen. So reicht es die gesamte Berechnung dann nur von einem Prozessor erledigen zu lassen.
Zur Veranschaulichung kommt nun ein kurzes Video.
Dieselbe Aufgabe parallel auf allen Prozessoren ausführen
Schon früh wurden Vektorrechner entwickelt, die Berechnungen gleichzeitig auf vielen Arrays ausführen. Wenn viele gleichartige Daten auf gleiche Weise bearbeitet werden sollen sind Vektorprozessoren reinen Standartprozessoren, die alle Daten nacheinander bearbeiten, weit überlegen. Anwendungsbeispiele sind Grafikkarten.
Zur Veranschaulichung kommt nun ein kurzes Video.
Eine Aufgabe auf mehrere Prozessoren parallelisiert
Wird hingegen nur eine Anwendung ausgeführt, so muss diese für die mehreren Prozessoren parallelisiert werden. Das bedeutet, die Anwendung wird so modifiziert, dass sie komplett oder auch nur Fragmente davon gleichzeitig auf mehreren Prozessoren ausgeführt werden.
Das braucht einen sinnvoll organisierten „Arbeitsablauf“ und „Arbeitsteilung“ der miteinander agierenden Prozessoren.
Zur Veranschaulichung kommt nun ein kurzes Video.